个人记录

2021 年 7月 - 9月

面向对象程序设计

  • JAVA 程序设计复习
  • JAVA GUI,java.awt 与 java.swing 学习
    • 小项目:五子棋
    • JAVA 写 GUI 真屎

BUPTCPC - 第一年 with ZYM & XKD

  • 校赛准备
    • 结果:决赛铁牌(😅)

Servlet 技术初探

  • java - servlet技术 - tomcat
    • 小项目:作业记录CRUD,部署在别人(ZCW)的服务器上

2021 年 10月 - 11月

SSM 框架初探

  • 字节跳动,后端开发训练营
    • 项目:具有安全防护功能的账号系统

React 框架学习

  • 阅读蓝牙签到代码与 React 官方提供的文档

2021年 12月 - 2022年 1月

React 框架应用

  • TailwindCSS(用类名代替 css 表)
  • 微信小程序接口初探
  • 不优雅的调后端接口,深刻理解 JavaScript 同步与异步
    • 项目:BOP 云上志愿者之家(微信小程序部分)

GUI 再探

  • Win 32 程序开发学习,从操作系统的角度看窗体程序

  • C++ 程序设计再学习,学习C++的面向对象、泛型设计模式

  • Qt 框架学习,使用 Qt 封装的一系列库函数

    • 小项目:手动进行数据持久化的具有 GUI 界面的账号系统

2022年 3月- 6月

第一次大作业

  • 基于 Qt 框架的 “客车调度” 软件,非常简陋,但是 GUI 的各项要素齐全
  • 学到了什么:
    • 手写画图,真的很痛苦,感谢现代编程工具
    • angrychow宝刀未老,写代码一遍过,不需要调试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(watched == this->ui->widgetBus && event->type() == QEvent::Paint) {
int widgetWidth = ui->widgetBus->width();
int widgetHeight = ui->widgetBus->height();
QPainter paint(ui->widgetBus);
QPen widgetPen;
widgetPen.setColor(QColor(0,0,0));
widgetPen.setWidth(2);
paint.setPen(widgetPen);

paint.drawLine(20,widgetHeight/2,widgetWidth-20,widgetHeight/2);
int intervene = (widgetWidth-40)/(stationNumber - 1);
int nowDotPos = 20;
for(int i=1;i<=stationNumber;i++) {
widgetPen.setWidth(5);
paint.setPen(widgetPen);
paint.drawPoint(nowDotPos,widgetHeight/2);
paint.drawText(nowDotPos-10,widgetHeight*3/4,QString("车站")+QString::number(i));
nowDotPos+=intervene;
}
widgetPen.setColor(QColor(255,0,0));
paint.setPen(widgetPen);
paint.drawPoint(20+(int)((float)intervene*(float)nowPosition/(float)(g_getDistance()/g_getTotalStation())),widgetHeight/2);
int centerX = 20+(int)((float)intervene*(float)nowPosition/(float)(g_getDistance()/g_getTotalStation()));
QRect busRect(centerX-10,widgetHeight/4,30,30);
if(g_getNowDirection()==CLOCKWISE) {
paint.drawImage(busRect,QImage(":/static/bus_right.png"));
} else {
paint.drawImage(busRect,QImage(":/static/bus_left.png"));
}
paint.drawText(10+(int)((float)intervene*(float)nowPosition/(float)(g_getDistance()/g_getTotalStation())),widgetHeight*7/8,QString("车辆位置"));
qDebug()<<g_getDistance();
}
if(watched==this->ui->widgetSign&&event->type()==QEvent::Paint) {
QRect rect = this->ui->widgetSign->rect();
QPainter paint(this->ui->widgetSign);
if(g_getNowState()==STATE_RUNNING) {
if(g_getNowDirection()==CLOCKWISE) {
paint.drawImage(rect,QImage(":/static/right_sign.png"));
} else {
paint.drawImage(rect,QImage(":/static/left_sign.png"));
}
} else {
paint.drawImage(rect,QImage(":/static/stop.png"));
}

}
return QWidget::eventFilter(watched,event);
}

VUE 学习

  • Class-Based 重新学习前端

2022 年 7 月 - 9 月

React

  • 重回丑陋的面向对象,利用 React 造出来机器人前端

  • 堆物料库写了个北邮人数学挑战赛前端,但是这个事情黄了

  • 学到了什么:

    • 理解了 JavaScript OOP 的重要性质:运行时作用域和名义作用域(this 指向问题)
    • 理解了为什么 React 选择了函数式编程作为编程范式😅
    • 物料库的随意组合往往比自己设计 css 要好看的多
    • 利用 Data Bus 写了全局报错,绕过了 React 官方建议的 Provider 模式,确实很好用,但是违反结构化编程的原则,大项目不能这么干

2022 年 10 月 - 12 月

Flutter

  • toy code,用 Flutter 进行跨平台开发
    • 这事儿疑似半途而废了(截止 2023.1.21)
    • 感觉不如 React Native
    • 感觉不如 Electron

BUPTCPC - 第二年 with MCY & WH

  • 年度保留节目
  • Result: 银牌🥈 正式队伍 14 名
  • angrychow宝刀未老,写代码一遍过,不需要调试(dirty 率为 0,严查!)

2023 年 1-3 月

一期一会

2023 年 4-5 月

数据可视化

  • Vue + ECharts
  • 调接口很恶心

node.js,React

  • 学会用 node.js 快速起一个单线程异步后端服务
  • 重新学习 js,背诵面经
  • 用 React 糊了一个 DS 课设前端
  • 玩了玩 Electron,Electron + React
  • 看了看 React Native,简单配了一下环境。

计算机网络课程设计(DNS Server written by C)

  • TCP,UDP 发包收包,DNS报文解析
  • 简易线程池,实现了简单的多线程阻塞式服务器

java OOP - Client Part

  • 用 ChatGPT 写了 java swing
  • 自己手搓了一套 MVC,消息总线 dispatch 任务

2023 年 8-11 月

  • 北京云唤维公司实习,Vue 前端开发